/*
 * Querybase.h
 *  这是一个抽象基类，具体的查询类型从中派生，所有的成员都是private的
 *  Created on: 2020年12月13日
 *      Author: san
 */

#ifndef QUERYBASE_H_
#define QUERYBASE_H_

#include <vector>

#include "TextQuery.h"

class QueryResult;
class Query_base {
	friend class Query;
//	virtual ~Query_base() = default;

protected:
	using line_no = TextQuery::line_no;
	virtual ~Query_base() = default;

private:
	// eval 返回与当前Query 匹配的 QueryResult
	virtual TextQuery::QueryResult eval(const TextQuery &) = 0;
	// rep 是表示查询的一个string
	virtual std::string rep() const = 0;
};

#endif /* QUERYBASE_H_ */
